#include <iostream>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>
#include <cstring>

using namespace std;
int cnt = 0;
void handler(int sig)
{
    cout<<"sig number: "<<sig<<" cnt: "<<cnt<<endl;
    int n = alarm(2);
}
int main()
{
    //设置一个简单的闹钟
    signal(SIGALRM, handler);
    alarm(1);
    
    while(true)
    {
        sleep(1);
        cout<<"cnt: "<<cnt++<<endl;
    }
    return 0;
}

// int cnt = 0;
// void handler(int sig)
// {
//     cout<<"sig number: "<<sig<<" cnt: "<<cnt<<endl;
//     exit(0);
// }
// int main()
// {
//     signal(SIGALRM, handler);
//     alarm(1);
//     while(true)
//     {
//         cnt++;
//     }
//     return 0;
// }

// int main()
// {
//     //设置一个简单的闹钟
//     alarm(1);
//     int cnt = 0;
//     while(true)
//     {
//         cout<<"cnt: "<<cnt++<<endl;
//     }
//     return 0;
// }

// int main()
// {
//     int cnt = 0;
//     while(true)
//     {
//         cout<<"cnt: "<<cnt<<endl;
//         cnt++;
//         if(cnt == 5)
//         {
//             cout<<"this process stop..."<<endl;
//             raise(19);//19号是暂停
//         }
//     }
//     return 0;
// }

// int main(int argc, char* argv[3])
// {
//     if(argc != 3)
//     {
//         cout<<"Usage: "<<argv[0]<<" -signumber pid"<<endl;
//         return 1;
//     }
//     int signumber = stoi(argv[1]+1);
//     int sigpid = stoi(argv[2]);
//     int n = kill(sigpid, signumber);
//     if(n < 0)
//     {
//         cerr<<"errno: "<<errno<<", "<<strerror(errno)<<endl;
//         exit(2);
//     }
//     return 0;
// }